跳到主要内容

04 GPIO实验

up的视频讲解

沿着输入、判断、输出的路径,依次完成按键点灯、传感器点灯和蜂鸣器控制。

例程代码: 📥按键点灯实验代码

1 🔽 按键点灯实验​

1.1 实验连接​

按键接到 PA0,LED 控制信号接到 PA1。先按图连接电源与地,再连接信号。

按键接到 PA0,LED 控制信号接到 PA1。先按图连接电源与地,再连接信号。
按键接到 PA0,LED 控制信号接到 PA1。先按图连接电源与地,再连接信号。

1.2 实验原理​

按键松开时,下拉让输入保持低电平;按下后,按键把信号接到 3.3 V,输入变为高电平。

程序用 HAL_GPIO_ReadPin() 读取这个状态,再用 HAL_GPIO_WritePin() 控制 LED。这样就把“外部动作 → 输入寄存器 → 程序判断 → 输出电平”串了起来。

对照按键与 LED 电路,分别找到输入通路和输出通路。
对照按键与 LED 电路,分别找到输入通路和输出通路。

本实验使用轮询:主循环每次运行到判断语句时,读取一次当前状态。

1.3 CubeMX配置​

PA0 GPIO_Input Pull-down,按下接3.3 V

CubeMX配置
CubeMX配置

PA1 GPIO_Output Push Pull,初始Low,Low速度即可

CubeMX配置

1.4 实验代码​

全局​

main()​

while(1)里面​

if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == 1)//按键按下
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,1);//黄灯亮
}
else
{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,0);//黄灯灭
}

2 🌻 光照/温度 点灯实验​

2.1 实验连接​

把光敏或热敏模块的数字输出 DO 接入输入引脚,其余输出控制延续上一实验。

把光敏或热敏模块的数字输出 DO 接入输入引脚,其余输出控制延续上一实验。
把光敏或热敏模块的数字输出 DO 接入输入引脚,其余输出控制延续上一实验。

2.2 实验原理​

传感器先把光照或温度变化转换成电阻变化,再通过分压得到模拟电压 AO。比较器把这个电压与电位器设定的阈值比较,输出数字状态 DO。

AO 表示连续变化的电压,DO 表示比较后的高低电平。
AO 表示连续变化的电压,DO 表示比较后的高低电平。

在课程光敏电路中,光照增强使光敏电阻减小,AO 电压随之下降。越过比较阈值时,DO 状态改变,模块指示灯也会变化。

先观察分压电路,再判断光照变化如何影响 AO。
先观察分压电路,再判断光照变化如何影响 AO。

旋转电位器改变的是比较阈值。按照本模块的设计,顺时针减小阈值、逆时针增大阈值。主控读取的是 DO 状态,还没有测量具体的光照或温度;测量会在 ADC 课程展开。

2.3 CubeMX配置​

我们可以复用按键点灯的配置

2.4 实验代码​

我们可以复用按键点灯的代码

3 📢 按键启动蜂鸣器实验原理​

3.1 实验连接​

输入仍使用按键,把输出控制线改接到蜂鸣器模块。

输入仍使用按键,把输出控制线改接到蜂鸣器模块。
输入仍使用按键,把输出控制线改接到蜂鸣器模块。

3.2 实验原理​

蜂鸣器由三极管驱动,GPIO 负责提供控制信号。这样把“控制电平”与“负载工作电流”分开。

沿 GPIO、基极驱动、三极管和蜂鸣器的方向读图。
沿 GPIO、基极驱动、三极管和蜂鸣器的方向读图。

三极管有基极、集电极和发射极。课程先把它理解为受控制的开关:适当的基极驱动使负载通路导通,撤去驱动后停止。这里的约 0.7 V 是帮助理解硅三极管结电压的近似值,并不是所有负载都可直接连接 GPIO 的依据。

3.3 CubeMX配置​

我们可以复用按键点灯的配置

3.4 实验代码​

我们可以复用按键点灯的代码